import { MessageBox } from 'element-ui'
/**
 * 
 * @param {string} text 确认框文本内容
 * @param {string} title 确认框标题提醒文本
 * @param {function} callback  删除后的回调，必须return一个promise，否则添加isPromise = false参数
 * @param {function} failCallback  接口调用失败后的回调
 */
function reconfirm({
    text = '是否确定删除表单',
    title = '确认提示',
    callback,
    isPromise = true,
    failCallback,
    cancelCallback,
    dangerouslyUseHTMLString = false,
    confirmButtonText = '确定',
    type = 'warning',
}) {
    MessageBox.confirm(text, title, {
        confirmButtonText,
        cancelButtonText: '取消',
        type,
        dangerouslyUseHTMLString,
        closeOnClickModal: false,
        beforeClose: (action, instance, done) => {
            // 如果回调不是promise，直接执行
            if (!isPromise) {
                if (action === 'confirm') {
                    callback()
                } else {
                    cancelCallback && cancelCallback()
                }
                done()
                return
            }
            // 如果是确定按钮，加上加载动画
            if (action === 'confirm') {
                instance.confirmButtonLoading = true
                callback().then(() => {
                    done()
                }).finally(() => {
                    instance.confirmButtonLoading = false
                })
            } else {
                cancelCallback && cancelCallback()
                done()
            }
        }
    }).then(() => {
        // if (callback && !isPromise) {
        //     callback()
        // }
    }).catch(() => {
        failCallback && failCallback()
    })
}
export default reconfirm
